home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BCI NET
/
BCI NET Dec 94.iso
/
archives
/
programming
/
source
/
retinasource.lha
/
RBO_SCode.lha
/
flash38.S
< prev
next >
Wrap
Text File
|
1993-05-03
|
66KB
|
2,421 lines
;Retina burn source code written by S.Smith (CYLON/DIMENSION X) hope you
;like the demo.
;If you like any routine in this demo please use it your self I don't mind.
;A credit in your demo would not go amiss if you do.
;the demo is currently configed for a 1200 to set it back to 500 config
;just set dmawait in ptplay1200.i to 300.
;As you will discover some of my code is commented (shock horror) I hope it
;helps.
;
;Anyone wishing to swap source code PLEASE NOTE SEND ONLY YOUR OWN SOURCE
;I DO NOT WANT ANY RIPPED OFF SOURCE OR RESOURCED STUFF THANK YOU VERY MUCH
;I BELIEVE IN SHARING ANY KNOWLEDGE I GAIN, BUT I RESPECT ANY CODERS WISH
;TO KEEP THEIR CODE PRIVATE OK.
;
;PS yes some of the coding is not optimised and maybe some of it could be done
;better but in the end it does work and doesn't crash on any machine I've
;tried it on which is more than I can say for many other demos.
;
;Message to VECTOR DEMO CODERS boooooooorrrrrrrrrrrrrrinnnnggggggggg
;no more please I really do not want to see a 1200000000445475457 face
;wobbly glenz, the prospect of seeing one makes me reboot my machine.
;DO SOMETHING LIVELY SOME THING WITH A BIT OF GO IN IT AND NO MORE BLOODY
;SPACESHIPS.
;
;Possible influences on this demo
;
;hypnotic hammer, bubrain, kgb megademo.
;
;jesus on e's wasn't written when this demo was released.
incdir "scode:"
;*-------------------------------------------------------------------------------*
include include/hardware/custom.i
include include/hardware/dmabits.i
include include/libraries/dos_lib.i
include include/libraries/dos.i
include include/exec/exec_lib.i
include include/exec/nodes.i
include include/exec/memory.i
;*-------------------------------------------------------------------------------*
; USER DEFINES
;*-------------------------------------------------------------------------------*
custom equ $dff000
;*-------------------------------------------------------------------------------*
; PROGRAMME START
;*-------------------------------------------------------------------------------*
section startup_code,code
;*-------------------------------------------------------------------------------*
move.l #text,textpos set text pos to start
move.l #backdr1,back_ptr set back drop to start pic
move.l #fl1,ack_ptr set back drop to start pic
move.l #collist,x_ptr
move.l #introg+10240,screenpos
move.l #greets,greet_ptr
;*-------------------------------------------------------------------------------*
move.l 4.w,a6 move exec.lib base addr a6
move.l #anim_data,anim_ptr move start of data in to the anim ptr
jsr _LVOForbid(a6) suspend all tasks
;*-------------------------------------------------------------------------------*
lea glib,a1 point a1 2 text for graphic lib
moveq #0,d0 clr d0
move.l 4.w,a6 move exec.lib base addr a6
jsr _LVOOpenlibrary(a6) open library
tst d0
beq.w errorgfx zero retcode=error opening
move.l d0,gfxlib store gfx lib address
;*-------------------------------------------------------------------------------*
lea dlib,a1 point a1 2 text for dos lib
moveq #0,d0
move.l 4.w,a6 move exec.lib base addr a6
jsr _LVOOpenlibrary(a6) open library
tst d0
beq.w errordos zero retcode=error opening
move.l d0,doslib store dos lib address
;*-------------------------------------------------------------------------------*
; lea introp,a0 move address of colour table into a0
; lea intro_list,a1 move addr colour list in copper int a1
; move.w #31,d0 there are 16 colours in colour table
;
;intro_again:
; move.w (a0)+,2(a1) move a color in col tab into copper
; addq.l #4,a1 add 4 2 addr in copper 4 next color
; dbf d0,intro_again do it again if less than 16 cols done
;*-------------------------------------------------------------------------------*
move.l #dummysprite,d0 move address of blank sprite into d0
move.w d0,sprite+6 put lo word of addr in copper
move.w d0,mirsprite+6 put lo word of addr in copper
move.w d0,intro_sprite+6 put lo word of addr in copper
swap d0
move.w d0,sprite+2 put high word of addr in copper
move.w d0,mirsprite+2 put high word of addr in copper
move.w d0,intro_sprite+2 put high word of addr in copper
bsr bass_off
;*-------------------------------------------------------------------------------*
move.l #TEXT_screen,d0 put addr of you ilbm graphic in d0
move.w d0,bitplanes+p0l put lo word of first bp in to bppointer
move.w d0,replanes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,bitplanes+p0h put hi word of first bp into bppointer
move.w d0,replanes+p0h put hi word of first bp into bppointer
move.l #back_pic,d0 put addr of you ilbm graphic in d0
move.w d0,bitplanes+p1l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,bitplanes+p1h put hi word of first bp into bppointer
move.l #blank,d0 fill in blanks.
move.w d0,blank1+p0l put lo word of first bp in to bppointer
move.w d0,blank2+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,blank1+p0h put hi word of first bp into bppointer
move.w d0,blank2+p0h put hi word of first bp into bppointer
move.l #screen,d0 put addr of you ilbm graphic in d0
move.w d0,gfxplanes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,gfxplanes+p0h put hi word of first bp into bppointer
swap d0
move.l #xxxx,d0 put addr of you ilbm graphic in d0
move.w d0,mirror_plane+p0l
swap d0
move.w d0,mirror_plane+p0h scn address in copperlist
;*-------------------------------------------------------------------------------*
move.l #introg,d0 put addr of you ilbm graphic in d0
move.w d0,intro_planes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,intro_planes+p0h put hi word of first bp into bppointer
swap d0
add.l #40,d0
move.w d0,intro_planes+p1l
swap d0
move.w d0,intro_planes+p1h scn address in copperlist
swap d0
add.l #40,d0
move.w d0,intro_planes+p2l
swap d0
move.w d0,intro_planes+p2h scn address in copperlist
swap d0
add.l #40,d0
move.w d0,intro_planes+p3l
swap d0
move.w d0,intro_planes+p3h scn address in copperlist
swap d0
add.l #40,d0
move.w d0,intro_planes+p4l
swap d0
move.w d0,intro_planes+p4h scn address in copperlist
;*-------------------------------------------------------------------------------*
move.l gfxlib,a6 gfx lib address
add.l #$32,a6 address of old copper
move.l a6,cgfxlib
move.w #$80,$dff096 dma ctrl (disable copper)
move.l (a6),oldcopper save old copper address
move.l #intro_copper,(a6) replace old copper address with my
; copper list (lower down in my code)
move.w #$8080,$dff096 dma ctrl (enable copper)
move.w #$8010,$dff09a copper interupt enabled
move.l $6c.w,into_interupt store old level 3 interupt
move.l $6c.w,fred_interupt store old level 3 interupt
move.l $6c.w,old_interupt store old level 3 interupt
move.l #intro_interupt,$6c.w point to my interupt rountine
;*-------------------------------------------------------------------------------*
lea black1,a1
lea introp,a0
lea intro_list,a3
move.l #31,d7
bsr fade
move.w #200,Intro_counter
iouse:
btst #6,$bfe001 test mousebutton
beq.w jmouse
tst.w intro_counter
bne.w iouse
jmouse
lea black1,a1
lea black2,a0
lea intro_list,a3
move.l #31,d7
bsr fade
;*-------------------------------------------------------------------------------*
lea mt_data,a0
bsr.w mt_init setup play routine
;*-------------------------------------------------------------------------------*
move.w #$80,$dff096 dma ctrl (disable copper)
move.l #my_copper,(a6) replace old copper address with my
; copper list (lower down in my code)
move.w #$8080,$dff096 dma ctrl (enable copper)
move.w #$8010,$dff09a copper interupt enabled
move.l #new_interupt,$6c.w point to my interupt rountine
;*-------------------------------------------------------------------------------*
move.w #100,Intro_counter
imouse: tst.w intro_counter
bne.w imouse
mouse btst #6,$bfe001 test mousebutton
bne.w mouse
bsr.w mt_end music end routine
jsr bass_off turn off sprites
move.w #$80,$dff096 dma ctrl (disable copper)
move.l #my_copper,(a6) replace old copper address with my
; copper list (lower down in my code)
move.w #$F00,colourlist+6 red anim colour
move.w #$8080,$dff096 dma ctrl (enable copper)
move.w #$8010,$dff09a copper interupt enabled
move.l #fredinterupt,$6c.w point to my interupt rountine
move.w #1,gfxcmp
move.l #spin_data,spin_ptr
move.w #$00,bdr1+2 red anim colour
move.w #$00,bdr1+6 red anim colour
move.w #$00,colourlist+2 red anim colour
move.w #$0,text_cols+2 red anim colour
move.w #$0,text_cols+6 red anim colour
move.w #$0,lowcol+2 red anim colour
move.w #$00,bdr2+2 red anim colour
waitend:
tst.w spindone
beq waitend
waitnextblank:
tst.w vbl
beq waitnextblank
eor.w #$ffff,vbl
sub.w #$100,colourlist+6
tst.w colourlist+6
bne waitnextblank
lea mt_data2,a0
bsr.w mt_init setup play routine
move.w #0,moddulo+2
move.w #0,moddulo+6
lea plane_start,a1
lea plane_store,a0
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l #backdr1,a0 move the address of first screen
lea.l introg,a1 dest address
move.l #2559,d1 size -1
a_loop:
move.l (a0)+,(a1)+ move a longword
dbr d1,a_loop do it until all done
move.l #introg+10240,d0 put addr of you ilbm graphic in d0
move.l d0,a1 put addr of you ilbm graphic in d0
move.l #(2559*2)+1,d1 size -1
b_loop:
move.l #0,(a1)+ move a longword
dbr d1,b_loop do it until all done
move.w d0,intro_planes+p1l
swap d0
move.w d0,intro_planes+p1h scn address in copperlist
move.w #$00,intro_list+6 blue fg
eor.w #$ccc,intro_list+38 change colour
bsr plonk
eor.w #$FFFF,toggle
move.l gfxlib,a6 gfx lib address
add.l #$32,a6 address of old copper
move.w #$80,$dff096 dma ctrl (disable copper)
move.l #intro_copper,(a6) replace old copper address with my
; copper list (lower down in my code)
move.w #$8080,$dff096 dma ctrl (enable copper)
move.w #$8010,$dff09a copper interupt enabled
move.l #intro_interupt,$6c.w point to my interupt rountine
;*-------------------------------------------------------------------------------*
wnextblank:
tst.w vbl
beq wnextblank
eor.w #$ffff,vbl
add.w #$001,intro_list+6
cmp.w #$009,intro_list+6
bne wnextblank
;*-------------------------------------------------------------------------------*
move.w #100,Intro_counter
hmouse: tst.w intro_counter
bne.w hmouse
fmouse btst #6,$bfe001 test mousebutton
bne.w fmouse
wxtblank:
tst.w vbl
beq wxtblank
eor.w #$ffff,vbl
sub.w #$111,intro_list+38
tst.w intro_list+38
bne wxtblank
wextblank:
tst.w vbl
beq wextblank
eor.w #$ffff,vbl
sub.w #$001,intro_list+6
tst.w intro_list+6
bne wextblank
bchg #1,$bfe001 audio filter toggle
;*-------------------------------------------------------------------------------*
move.l old_interupt,$6c.w restore old level 3 interupt
move.w #$10,$dff09a disable level 3 interupt
move.l gfxlib,a6 put the base address of gfx library >a6
add.l #$32,a6 add $32 to base addr of lib as this is
; the mem location that points to active
; copper list
move.w #$0080,$dff096 dma ctrl disable copper must be done
; before restoring old copper
move.l oldcopper,(a6) retore old copper
move.w #$8080,$dff096 dma enable copper
move.l doslib,a1 close dos lib
move.l 4.w,a6
jsr _LVOCloselibrary(a6)
bsr.w mt_end music end routine
;*-------------------------------------------------------------------------------*
errordos:
move.l gfxlib,a1 close graphics lib
move.l 4.w,a6
jsr _LVOCloselibrary(a6)
;*-------------------------------------------------------------------------------*
errorgfx:
move.l 4.w,a6 enable multitasking again
jsr _LVOpermit(a6)
;*-------------------------------------------------------------------------------*
error moveq #0,d0
rts
;*-------------------------------------------------------------------------------*
fade
swap d7
move #14,d0
bright
moveq #2,d1
nibble
swap d7
move d7,d2
swap d7
col
move d2,d3
lsl #1,d3
move 0(a0,d3.w),d4
move 0(a1,d3.w),d5
cmp #2,d1
bne.w not2
and #$f00,d4
and #$f00,d5
cmp d5,d4
beq.w doneadd
blo.w sub2
add #$100,0(a1,d3.w)
bra.w doneadd
sub2
sub #$100,0(a1,d3.w)
bra.w doneadd
not2
cmp #1,d1
bne.w not1
and #$f0,d4
and #$f0,d5
cmp d5,d4
beq.w doneadd
blo.w sub1
add #$10,0(a1,d3.w)
bra.w doneadd
sub1
sub #$10,0(a1,d3.w)
bra.w doneadd
not1
cmp #0,d1
bne.w doneadd
and #$f,d4
and #$f,d5
cmp d5,d4
beq.w doneadd
blo.w sub0
addq #$1,0(a1,d3.w)
bra.w doneadd
sub0
subq #$1,0(a1,d3.w)
doneadd
dbra d2,col
; change immediate value in d6 the higher it is the slower the fade
moveq #1,d6
bsr.w pause
move.l a1,a2
swap d7
move.w d7,d2
swap d7
move.l a3,-(sp)
copy3 move.w (a2)+,2(a3)
addq.l #4,a3
dbra d2,copy3
move.l (sp)+,a3
dbra d1,nibble
dbra d0,bright
rts
;================================================
; pause
; d6.w = pause time in 1/50 sec
;================================================
pause
move.w vbl,d7
waitframe
cmp vbl,d7
beq.w waitframe
dbra d6,pause
rts
**************************************************
; in interupt routine put:-
; in variables put:-
**************************************************
;*-------------------------------------------------------------------------------*
plonk:
move.l greet_ptr,a1 move address of next char into a1
cmp.b #"@",(a1)
bne no_scroll_pause
addq.l #1,a1
move.w #100,scroll_wait
no_scroll_pause:
moveq.l #0,d2
move.l screenpos,a0 load LINE pos on screen.
add.l #10240,a0
bsr.w wblit clear line
move.l #$ffffffff,BLTAFWM+Custom
MOVE.W #0,BLTADAT+CUSTOM
move.w #0,BLTDMOD+Custom
move.l a0,BLTDPT+Custom
move.w #%0000000111110000,BLTCON0+Custom
move.w #0,BLTCON1+Custom
move.w #(64*32)+20,BLTSIZE+Custom 32lines by 1 word
get_next_l:
move.b (a1)+,d1 get char from scrolltext
add.w #1,d2 add one line length counter
cmp.b #10,d1 are we at eol
bne.w get_next_l no read another ltr
subq.l #1,d2 remove cr from counter for disp loop
move.l #20,d4 1/2 scrn size in bytes
sub.l d2,d4 1/2 txt len - 1/2 scrn width = offset
add.l d4,a0 add offset to the base addr of screen
move.l greet_ptr,a1 move address of next char into a1
cmp.b #"@",(a1)
bne no_scroll_paus
addq.l #1,a1
no_scroll_paus:
moveq.l #0,d1
moveq.l #0,d5
nextchar:
move.b (a1)+,d1 char into d1
tst.b d1 if val in d0 is 0
beq textended it is the end of the text
move.l a1,greet_ptr
cmp.b #10,d1 is it eol
beq.w eol end of line exit routine
sub.l #32,d1 remove ctrl codes from ascii char value
lsl.l d1 mult by two to get off. in font.
lea font16,a2 load base address of font.
add.l d1,a2 add offset to base address.
bsr.w doblt go blit char from font to screen.
addq.l #2,a0 add 2 bytes for pos of next char.
bra.w nextchar
eol:
rts
textended:
move.l #greets,greet_ptr
rts
doblt
bsr.w wblit
move.l #$ffffffff,BLTAFWM+Custom
move.w #39,BLTDMOD+Custom
move.w #(91*2)-1,BLTAMOD+Custom
move.l a0,BLTDPT+Custom
move.l a2,BLTAPT+Custom
move.w #%0000100111110000,BLTCON0+Custom
move.w #0,BLTCON1+Custom
move.w #(64*32)+1,BLTSIZE+Custom 32lines by 1 word
rts
copyline:
move.l screenpos,a3 load pos on screen.
move.l a3,a4 used for copy blit
sub.l #40*32,a3
add.l #10240,a4
bsr.w wblit
move.l #$ffffffff,BLTAFWM+Custom
move.w #0,BLTDMOD+Custom
move.w #0,BLTAMOD+Custom
move.l a3,BLTDPT+Custom
move.l a4,BLTAPT+Custom
move.w #%0000100111110000,BLTCON0+Custom
move.w #0,BLTCON1+Custom
move.w #(64*32)+20,BLTSIZE+Custom 32lines by 20 words
rts
wblit:
btst.b #DMAB_BltDone-8,DMAConR+custom
BlitWait1:
btst.b #DMAB_BltDone-8,DMAConR+Custom
bne.w BlitWait1
rts
;*-------------------------------------------------------------------------------*
; MY INTERUPT ROUTINE
;*-------------------------------------------------------------------------------*
fredinterupt:
movem.l d0-d7/a0-a6,-(sp) store registers
and.w #$10,$dff01e is the interupt a copper interupt?
beq.w no_fred if not skip copper routines
move.w #$10,$dff09c acknowledge interupt
eor.w #$ffff,vbl
cmp.w #13,gfxcmp
bgt still
sub.w #1,gfxcount
tst.w gfxcount
bne.b no_spin
bsr.w dospin2
sub.w #1,acounter
tst.w acounter
bne notslow
move.w #2,acounter
still:
add.w #1,gfxcmp
speedslow:
cmp.w #50,gfxcmp
blt notslow
move.w #$FFFF,spindone
notslow:
move.w gfxcmp,gfxcount
no_spin:
no_fred:
movem.l (sp)+,d0-d7/a0-a6 restore registers so code out of
; interupt does not cock up
fred_interupt: equ *+2
jmp $12345678 jump to old routine
;*------------------------------------------------------------------------------
; GFX spin routine
;*------------------------------------------------------------------------------
dospin2:
move.l spin_ptr,a0 put ptr to anim sequ > a0
move.l A0,d0 clr d0
cmp.l #spin_fin,d0
blt .inrange1
move.l #spin_data,a0 move start of data in to the anim ptr
move.l #spin_data,anim_ptr move start of data in to the anim ptr
.inrange1:
moveq.l #0,d0 clr d0
move.b (a0)+,d0 put anim sequ into d0
tst.b d0 is it end of anim char?(0)
bne.w .not_last_anim no so skip next three insts
move.l #spin_data,a0 move start of data in to the anim ptr
.goforit:
move.b (a0)+,d0 move fresh char to d0
.not_last_anim:
move.l a0,spin_ptr store new ptr addr
move.l #screen,d1 base addr of anims
sub.b #1,d0 remove extra from d0
mulu #5600,d0 multiply frame no. by frame size
add.l d1,d0 add base addr to frame offset
.put_new_bm:
move.w d0,gfxplanes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,gfxplanes+p0h put hi word of first bp into bppointer
swap d0
rts
;*-------------------------------------------------------------------------------*
; MY INTERUPT ROUTINE
;*-------------------------------------------------------------------------------*
intro_interupt:
movem.l d0-d7/a0-a6,-(sp) store registers
and.w #$10,$dff01e is the interupt a copper interupt?
beq.w no_int if not skip copper routines
move.w #$10,$dff09c acknowledge interupt
eor.w #$FFFF,vbl
sub.w #1,intro_counter
tst.w toggle are we at the second usage
bne no_int no then bog off
sub.w #1,scroll_wait
tst.w scroll_wait
bne no_greet
move.w #1,scroll_wait
add.l #40,screenpos add a line
move.l screenpos,d0 move current screen pos in
move.w d0,intro_planes+p1l and bop it to copper list
swap d0
move.w d0,intro_planes+p1h scn address in copperlist
moveQ.l #0,d0
sub.w #1,scrollcount dec line scrolled by 1
tst.w scrollcount have we scrolled 32 pix lines
bne no_greet no then no need to reset counter
move.w #32,scrollcount restore line pix lines scrolled
sub.b #1,linecount sub one from no lines scrolled
tst.b linecount has the screen reached its end yet?
bne not_BOT no then bog off
bsr.w copyline copy line
move.l #introg+10240,screenpos set to screen start
move.b #9,linecount
bsr plonk write line to be scrolled
bra no_greet
not_bot:
bsr plonk
bsr.w copyline go blit char from font to screen.
no_greet:
bsr.w mt_music call music player
no_int
movem.l (sp)+,d0-d7/a0-a6 restore registers so code out of
; interupt does not cock up
into_interupt: equ *+2
jmp $12345678 jump to old routine
;*-------------------------------------------------------------------------------*
new_interupt
movem.l d0-d7/a0-a6,-(sp) store registers
and.w #$10,$dff01e is the interupt a copper interupt?
beq.w no_music if not skip copper routines
move.w #$10,$dff09c acknowledge interupt
sub.w #1,intro_counter
cmp.w #$fff,equalizer3
bne.b no_beat
addq.w #2,beatcount
no_beat:
cmp.w #10,beatcount
bgt.b ten
move.w #1,wait
move.w #$0,colourlist+2
jsr strobe2
bsr.w clang
jsr hitthebass
bsr.w bdrstrobe
jsr Do_text
jmp out
ten:
cmp.w #20,beatcount
bgt.b twenty
jsr strobe3
bsr.w clang
jsr hitthebass
bsr.w bdrstrobe
jsr Do_text
jmp out
twenty:
cmp.w #30,beatcount
bgt.b thirty
jsr strobe4
move.w #$FFF,bdr1+6
bsr.w clang
jsr hitthebass
jsr strobe2
jsr Do_text
jmp out
thirty:
cmp.w #40,beatcount
bgt.b forty
jsr strobe5
jsr strobe2
bsr.w clang
jsr hitthebass
move.w #3,wait
jsr Do_text
jmp out
forty:
cmp.w #50,beatcount
bgt.b fifty
jsr strobe6
bsr.w clang
jsr hitthebass
jsr Do_text
jmp out
fifty:
cmp.w #60,beatcount
bgt.b sixty
jsr strobe8
bsr.w bdrstrobe
bsr.w clang
jsr hitthebass
move.w #$FFF,bdr1+6
jsr strobe2
jsr Do_text
jmp out
sixty:
cmp.w #70,beatcount
bgt.b seventy
move.w #$FFF,bdr1+6
bsr.w clang
jsr hitthebass
move.w #7,wait
jsr strobe9
jsr Do_text
jmp out
seventy:
cmp.w #80,beatcount
bgt.b eighty
move.l cgfxlib,a6
move.l #mirror_cop,(a6) replace old copper address with my
jsr xbounce
jsr hitthebass
jmp no_gfx
eighty:
cmp.w #90,beatcount
bgt.b ninety
jsr hitthebass
tst.w cytog
bne rightcop
jsr cyclemap
eor.w #$FFFF,cytog
rightcop:
jsr cycle
jmp no_gfx
ninety:
eor.w #$FFFF,cytog
move.l a6,cgfxlib
move.l #my_copper,(a6) replace old copper address with my
move.w #$0,colourlist+2
move.w #$0,Text_cols+2
move.w #0,beatcount
sub.b #1,cycount change cycle routine
tst.b cycount check if 3 routine done
bne out no
move.b #3,cycount reset to routine 3
out:
bsr.w strobe1
bsr.w back_strobe
sub.w #1,gfxcount
tst.w gfxcount
bne.b no_gfx
bsr.w gfxchange
move.w gfxcmp,gfxcount
no_gfx:
bsr.w mt_music call music player
no_music
movem.l (sp)+,d0-d7/a0-a6 restore registers so code out of
; interupt does not cock up
old_interupt equ *+2
jmp $12345678 jump to old routine
;*-------------------------------------------------------------------------------*
include include/pt-playa1200.s yep good old pt-play
;*-------------------------------------------------------------------------------*
clang:
cmp.w #$8,chan1
bne.w nobass1
bsr.w change_back
move.w #0,chan1
rts
nobass1:
cmp.w #$8,chan2
bne.w nobass2
bsr.w change_back
move.w #0,chan2
rts
nobass2:
cmp.w #$8,chan3
bne.w nobass3
bsr.w change_back
move.w #0,chan3
rts
nobass3:
cmp.w #$8,chan4
bne.w nobass4
bsr.w change_back
move.w #0,chan4
rts
nobass4:
bra nothin_doin
;*-------------------------------------------------------------------------------*
; backdrop swap
;*-------------------------------------------------------------------------------*
change_back:
move.l back_ptr,d0 move current screen
cmp.l #back_end,d0 are we past the last screen ?
bne.w back_ok no lets move on
move.l #backdr1,D0 move the address of first screen
move.l d0,back_ptr and store it.
back_ok:
move.l d0,a0 source address
lea.l back_pic,a1 dest address
move.l #2559,d1 size -1
bdr_loop:
move.l (a0)+,(a1)+ move a longword
dbr d1,bdr_loop do it until all done
add.l #10240,back_ptr set ptr to next screen
move.w #100,bored
rts
nothin_doin:
sub.w #1,bored
tst.w bored
bne not_bored
move.l ack_ptr,d0 move current screen
cmp.l #fl_rend,d0 are we past the last screen ?
bne.w back_okay no lets move on
move.l #fl1,D0 move the address of first screen
move.l d0,ack_ptr and store it.
back_okay:
move.l d0,a0 source address
lea.l back_pic,a1 dest address
move.l #2559,d1 size -1
acopy_loop:
move.l (a0)+,(a1)+ move a longword
dbr d1,acopy_loop do it until all done
add.l #10240,ack_ptr set ptr to next screen
move.w #3,bored
not_bored:
rts
;*-------------------------------------------------------------------------------*
; Text display test
;*-------------------------------------------------------------------------------*
do_text:
sub.w #1,textcount
tst.w textcount
bne.w no_ext1
bsr.w bigtext
move.w #50,textcount
no_ext1:
rts
;*-------------------------------------------------------------------------------*
; Test for let the bass kick sample.
;*-------------------------------------------------------------------------------*
hitthebass:
cmp.w #$9,chan1
bne.w .nobass1
bsr.w bass_on
move.w #0,chan1
rts
.nobass1:
cmp.w #$9,chan2
bne.w .nobass2
bsr.w bass_on
move.w #0,chan2
rts
.nobass2:
cmp.w #$9,chan3
bne.w .nobass3
bsr.w bass_on
move.w #0,chan3
rts
.nobass3:
cmp.w #$9,chan4
bne.w .nobass4
bsr.w bass_on
move.w #0,chan4
rts
.nobass4:
sub.w #1,bass_wait
tst.w bass_wait
bne no_bass_off
move.w #$ffff,bass_wait
bsr bass_off
no_bass_off:
Rts
bass_off:
move.l #dummysprite,d0 move address of blank sprite into d0
move.w d0,d_sprite1+6 put lo word of addr in copper
move.w d0,d_sprite2+6 put lo word of addr in copper
move.w d0,d_sprite3+6 put lo word of addr in copper
move.w d0,d_sprite4+6 put lo word of addr in copper
swap d0
move.w d0,d_sprite1+2 put high word of addr in copper
move.w d0,d_sprite2+2 put high word of addr in copper
move.w d0,d_sprite3+2 put high word of addr in copper
move.w d0,d_sprite4+2 put high word of addr in copper
rts
bass_on:
move.l #ltbk_sprite1,d0 move address of blank sprite into d0
move.w d0,d_sprite1+6 put lo word of addr in copper
swap d0
move.w d0,d_sprite1+2 put high word of addr in copper
move.l #ltbk_sprite2,d0 move address of blank sprite into d0
move.w d0,d_sprite2+6 put lo word of addr in copper
swap d0
move.w d0,d_sprite2+2 put high word of addr in copper
move.l #ltbk_sprite3,d0 move address of blank sprite into d0
move.w d0,d_sprite3+6 put lo word of addr in copper
swap d0
move.w d0,d_sprite3+2 put high word of addr in copper
move.l #ltbk_sprite4,d0 move address of blank sprite into d0
move.w d0,d_sprite4+6 put lo word of addr in copper
swap d0
move.w d0,d_sprite4+2 put high word of addr in copper
move.w #30,bass_wait
rts
;*-------------------------------------------------------------------------------*
cyclemap:
move.l #dummysprite,d0 move address of blank sprite into d0
move.w d0,cyclesprite+6 put lo word of addr in copper
swap d0
move.w d0,cyclesprite+2 put high word of addr in copper
move.l #cyclescreen,d0 put addr of you ilbm graphic in d0
move.w d0,cycleplanes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,cycleplanes+p0h put hi word of first bp into bppointer
swap d0
add.l #40,d0
move.w d0,cycleplanes+p1l
swap d0
move.w d0,cycleplanes+p1h scn address in copperlist
swap d0
add.l #40,d0
move.w d0,cycleplanes+p2l
swap d0
move.w d0,cycleplanes+p2h scn address in copperlist
swap d0
add.l #40,d0
move.w d0,cycleplanes+p3l
swap d0
move.w d0,cycleplanes+p3h scn address in copperlist
move.l gfxlib,a6 gfx lib address
add.l #$32,a6 address of old copper
move.w #$80,$dff096 dma ctrl (disable copper)
move.l #cycle_copper,(a6) replace old copper address with my
; copper list (lower down in my code)
move.w #$8080,$dff096 dma ctrl (enable copper)
move.w #$8010,$dff09a copper interupt enabled
rts
;*-------------------------------------------------------------------------------*
cycle:
cmp.b #1,cycount
beq forwards
cmp.b #2,cycount
beq forandequ
forwards:
moveq.l #0,d2
move.l #15,d0
move.l #cyclelist+2,a0
move.l #cyclelist+6,a4
cpy_down:
move.w (a4),(a0)
addq.l #4,a0
addq.l #4,a4
dbr d0,cpy_down
lea collist,a1
move.w tabpos,d2
addq.w #2,d2
cmp.w #217,d2
blt no_pob
move.w #0,d2
no_pob:
move.w d2,tabpos
move.w (a1,d2.w),(a0)
eor.w #$FFFF,direction
rts
forandequ:
moveq.l #0,d2
move.l #15,d0
move.l #cyclelist+2,a0
move.l #cyclelist+6,a4
cy_down:
move.w (a4),(a0)
addq.l #4,a0
addq.l #4,a4
dbr d0,cy_down
move.w equalizer1,d2
add.w equalizer2,d2
tst.b direction
bne noadd
add.w equalizer4,d2
noadd:
move.w d2,(a0)
eor.w #$FFFF,direction
rts
;*------------------------------------------------------------------------------
; GFX CHANGE routine
;*------------------------------------------------------------------------------
gfxchange:
move.l anim_ptr,a0 put ptr to anim sequ > a0
move.l A0,d0 clr d0
cmp.l #an_fin,d0
blt inrange1
move.l #anim_data,a0 move start of data in to the anim ptr
move.l #anim_data,anim_ptr move start of data in to the anim ptr
inrange1:
moveq.l #0,d0 clr d0
move.b (a0)+,d0 put anim sequ into d0
tst.b d0 is it end of anim char?(0)
bne.w not_last_anim no so skip next three insts
move.l #anim_data,a0 move start of data in to the anim ptr
goforit:
move.b (a0)+,d0 move fresh char to d0
move.w wait,gfxcmp move 5 into frame counter for anims
not_last_anim:
move.l a0,anim_ptr store new ptr addr
move.l #screen,d1 base addr of anims
sub.b #1,d0 remove extra from d0
mulu #5600,d0 multiply frame no. by frame size
add.l d1,d0 add base addr to frame offset
put_new_bm:
move.w d0,gfxplanes+p0l put lo word of first bp in to bppointer
swap d0 in copper list
move.w d0,gfxplanes+p0h put hi word of first bp into bppointer
swap d0
rts
;*------------------------------------------------------------------------------
; TEXT routine
;*-------------------------------------------------------------------------------*
bigTEXT:
moveq.l #0,d1 make sure d1 is clear
moveq.l #0,d2 make sure d1 is clear
move.l textpos,a1 move start of scroll text a1
move.l #TEXT_screen,a3 base addr of screen
move.b (a1),d1 get char from scrolltext
cmp #$0,d1 is it the last letter
bne.w notend if not skip to setting blitter up
lea text,a1 get start addr of text
move.l a1,textpos move to start of scroll text
notend:
nextltr:
move.b (a1)+,d1 get char from scrolltext
add.w #1,d2 add one line length counter
cmp.b #13,d1 are we at eol
bne.w nextltr no read another ltr
move.l d2,d3 d3 is temp work reg
subq.l #2,d2 remove cr from counter for disp loop
subq.l #1,d3 remove cr from counter for disp loop
lsl.l #1,d3 1/2 txt length in bytes
move.l #20,d4 1/2 scrn size in bytes
sub.l d3,d4 1/2 txt len - 1/2 scrn width = offset
add.l d4,a3 add offset to the base addr of screen
move.l textpos,a2 move start of scroll text a2
move.l a1,textpos and store for next time
readchar:
moveq.l #0,d1 make sure d1 is clear
move.b (a2)+,d1 get char from scrolltext
sub.b #$20,d1 remove 32 from ascii val to get offset
; in font eg spc=32 so spc first char
tst.b d1 if d1 = 0 then spc is at end of this
; char set
bne.w not_spc it`s not space
move.b #92-33,d1 set to correct pos for space
not_spc:
sub.b #32,d1 a is char 0 in this fnt so remove crap
lsl #$2,d1 multiply by 4 as font is 32 pixels
; wide
lea font32,a1 base addr of font into a1
add.l d1,a1 add char offset to a1
btst.b #DMAB_BltDone-8,DMAConR+custom
BlitWait2:
btst.b #DMAB_BltDone-8,DMAConR+Custom
bne.w BlitWait2
move.l #$ffffffff,BLTAFWM+Custom
move.w #36,BLTDMOD+Custom
move.w #(27-1)*4,BLTAMOD+Custom
move.l a3,BLTDPT+Custom
move.l a1,BLTAPT+Custom
move.w #%0000100111110000,BLTCON0+Custom
move.w #0,BLTCON1+Custom
move.w #(40*64)+2,BLTSIZE+Custom 40lines by 2 word
addq.l #4,a3
dbr d2,readchar have we done a full line
rts
;*------------------------------------------------------------------------------
; strobe routine 1
;*-------------------------------------------------------------------------------*
strobe1:
sub.w #1,count add 1 to counter
tst.w count are no. counts the same as amount in
bne.w noflash count amount?
tst.w upordown change flash speed up or down
beq.w countdown if 0 then count = down
bsr.w Text_flash flash screen
add.w #1,countamount add 1 to amount of time to wait
move.w countamount,count reset counter
cmp.w #10,countamount is delay at maximum
bne.w noflash no don`t change direction
eor.w #$FFFF,upordown yes change direction
bra.w noflash
countdown:
bsr.w Text_flash flaash screen
sub.w #1,countamount add 1 to amount of time to wait
move.w countamount,count reset counter
tst.w countamount is delay at maximum
bne.w noflash no don`t change direction
move.w #1,countamount
move.w #1,count
eor.w #$FFFF,upordown yes change direction
noflash:
RTS
Text_flash:
tst.w Text_cols+6
bne.w .setzero
move.w #$FFF,Text_cols+6
move.w #$FFF,lowcol+2
bra.w .skipzero
.setzero:
move.w #$0,Text_cols+6
move.w #$0,lowcol+2
.skipzero:
rts
flash:
tst.w colourlist+2
bne.w setzero
move.w #$fff,Text_cols+2
move.w #$fff,colourlist+2
bra.w skipzero
setzero:
move.w #$0,Text_cols+2
move.w #$0,colourlist+2
skipzero:
rts
dflash:
tst.w colourlist+2
bne.w .setzero
move.w #$fff,Text_cols+2
move.w #$fff,colourlist+2
move.w #$0,colourlist+6
bra.w .skipzero
.setzero:
move.w #$0,Text_cols+2
move.w #$0,colourlist+2
move.w #$fff,colourlist+6
.skipzero:
rts
cflash:
tst.w colourlist+2
bne.w .sezero
lea strobelist,a0
moveq.l #0,d0
move.b strobecount,d0
add.l d0,d0
add.l d0,a0
move.w (a0),Text_cols+2
move.w (a0),colourlist+2
bra.w .sipzero
.sezero:
move.w #$0,Text_cols+2
move.w #$0,colourlist+2
.sipzero:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 2
;*-------------------------------------------------------------------------------*
strobe2:
move.w equalizer2,colourlist+6
rts
;*-------------------------------------------------------------------------------*
; strobe routine 3
;*-------------------------------------------------------------------------------*
strobe3:
sub.w #1,counts3
tst.w counts3 are no. counts the same as amount in
bne.w .noflas count amount?
bsr.w flash change scrn colour
move.w #3,counts3 reset counter
.noflas:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 4
;*-------------------------------------------------------------------------------*
strobe4:
sub.w #1,counts3
tst.w counts3 are no. counts the same as amount in
bne.w .noflash count amount?
bsr.w flash change scrn colour
move.w #2,counts3 reset counter
.noflash:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 5
;*-------------------------------------------------------------------------------*
strobe5:
sub.w #1,counts3
tst.w counts3 are no. counts the same as amount in
bne.w .nflash count amount?
bsr.w flash change scrn colour
move.w #1,counts3 reset counter
.nflash:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 6
;*-------------------------------------------------------------------------------*
strobe6:
sub.w #1,counts3
tst.w counts3 are no. counts the same as amount in
bne.w .oflash count amount?
bsr.w dflash change scrn colour
move.w #3,counts3 reset counter
.oflash:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 7
;*-------------------------------------------------------------------------------*
strobe7:
move.w equalizer3,Text_cols+2
move.w equalizer3,colourlist+2
move.w equalizer1,colourlist+6
rts
;*-------------------------------------------------------------------------------*
; strobe routine 8
;*-------------------------------------------------------------------------------*
strobe8:
sub.w #1,counts3
tst.w counts3 are no. counts the same as amount in
bne.w n count amount?
sub.b #1,strobecount
tst.b strobecount
bne.w notstrobing
move.b #7,strobecount
notstrobing:
bsr.w cflash change scrn colour
move.w #6,counts3 reset counter
n:
rts
;*-------------------------------------------------------------------------------*
; strobe routine 9
;*-------------------------------------------------------------------------------*
strobe9:
move.w equalizer3,colourlist+6
move.w equalizer2,Text_cols+2
move.w equalizer2,colourlist+2
rts
;*-------------------------------------------------------------------------------*
; strobe routine border
;*-------------------------------------------------------------------------------*
bdrstrobe:
move.w equalizer4,bdr1+2
move.w equalizer4,bdr2+2
rts
;*-------------------------------------------------------------------------------*
; strobe routine back pic
;*-------------------------------------------------------------------------------*
back_strobe:
move.w equalizer4,bdr1+6
rts
;*-------------------------------------------------------------------------------*
; xbounce routine
;*-------------------------------------------------------------------------------*
xbounce:
move.l x_ptr,d0
move.l #bar_top+6,a0
move.l #13,d1
next_bar:
move.w 8(a0),(a0)+
addq.l #6,a0
dbr d1,next_bar
addq.l #2,d0
cmp.l #coll_finish,d0
blt.w not_fin_list
move.l #collist,d0
not_fin_list:
move.l d0,x_ptr
move.l d0,a1
move.w (a1),(a0)
move.l #5,d1
move.l #bar_bottom-2,a0
wtrye:
move.w (a0),8(a0)
subq.l #8,a0
dbr d1,wtrye
move.w bar_mid1-2,bar_mid2+6
move.l #7,d1
move.l #bar_mid1-2,a0
trye:
move.w (a0),8(a0)
subq.l #8,a0
dbr d1,trye
move.w (a1),bar_bot+6
moveq.l #0,d0
move.w equalizer3,d0
and.l #$f,d0
cmp.w #$c,d0
bgt x1
cmp.w #$7,d0
bgt x2
cmp.w #$3,d0
bgt x3
move.l #xxx1,d0 put addr of you ilbm graphic in d0
move.w d0,mirror_plane+p0l
swap d0
move.w d0,mirror_plane+p0h scn address in copperlist
rts
x1:
move.l #xxxx,d0 put addr of you ilbm graphic in d0
move.w d0,mirror_plane+p0l
swap d0
move.w d0,mirror_plane+p0h scn address in copperlist
rts
x2:
move.l #xxx3,d0 put addr of you ilbm graphic in d0
move.w d0,mirror_plane+p0l
swap d0
move.w d0,mirror_plane+p0h scn address in copperlist
rts
x3:
move.l #xxx2,d0 put addr of you ilbm graphic in d0
move.w d0,mirror_plane+p0l
swap d0
move.w d0,mirror_plane+p0h scn address in copperlist
rts
;*-------------------------------------------------------------------------------*
;this is a copper list consult hw ref manual for explanation of copper cmds
;*-------------------------------------------------------------------------------*
section copperlist,data_c
my_copper
dc.w BPLCON0,$0200 0 bp - lores bitplane control reg 0
dc.w BPLCON2,%00100100 bp ctrl reg
dc.w BPL1MOD,0 bp modulo odd
dc.w BPL2MOD,0 bp modulo even
bdr1: dc.w COLOR,$428 colour reg 0 (background)
dc.w COLOR+18,0 colour reg 0 (background)
scroll:
dc.w BPLCON1,$0 this is the bitplane contol register 1
; see hardware ref for details.
sprite:
dc.w SPRPT,0 this tells sprite 0 where to look
dc.w SPRPT+2,0 for it's graphic and pos data set by
d_sprite1:
dc.w SPRPT+8,0 this tells sprite 0 where to look
dc.w SPRPT+10,0 for it's graphic and pos data set by
d_sprite2:
dc.w SPRPT+12,0 this tells sprite 0 where to look
dc.w SPRPT+14,0 for it's graphic and pos data set by
d_sprite3:
dc.w SPRPT+16,0 this tells sprite 0 where to look
dc.w SPRPT+18,0 for it's graphic and pos data set by
d_sprite4:
dc.w SPRPT+20,0 this tells sprite 0 where to look
dc.w SPRPT+22,0 for it's graphic and pos data set by
dc.w DDFSTRT,$38 start of display horiz
dc.w DDFSTOP,$d0 stop of display horiz
dc.w DIWSTRT,$2c81 visible window top left
dc.w DIWSTOP,$2cc1 visible window bottom right
; this loads the pointers that tell custom chips where in mem you bps are
; the section near start of code fill in the addresses after
bitplanes
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w BPLPT+4,0
dc.w BPLPT+6,0
p0h equ 2
p0l equ 6
p1h equ 10
p1l equ 14
p2h equ 18
p2l equ 22
p3h equ 26
p3l equ 30
p4h equ 34
p4l equ 38
dc.w $2b01,$ff00
spritepall:
dc.w color+40,0
dc.w color+42,$ff0
dc.w color+44,$880
dc.w color+46,$440
dc.w color+48,0
dc.w color+50,$FF0
dc.w color+52,$880
dc.w color+54,$440
dc.w $2c01,$ff00 start gfx (text1)
dc.w BPLCON0,$2600
text_cols:
dc.w color,$0
dc.w color+2,$FFF
dc.w $5401,$ff00 end gfx
blank1:
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w $6601,$ff00 start gfx (anims)
gfxplanes
dc.w BPLPT,0
dc.w BPLPT+2,0
ColourList:
dc.w color,$0
dc.w color+2,$0
dc.w $f201,$ff00 end gfx
blank2:
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w $ffe1,$fffe end ntsc
dc.w $0401,$ff00 start gfx (text2)
replanes
dc.w BPLPT,0
dc.w BPLPT+2,0
lowcol:
dc.w color+2,$000
dc.w $2c01,$ff00 end gfx
dc.w BPLCON0,$0200
bdr2: dc.w COLOR,$428 colour reg 0 (background)
dc.w $2d01,$ff00 end pal
dc.w INTREQ,$8010 strobe for interupt
dc.w $ffff,$fffe end copper
;*-------------------------------------------------------------------------------*
;copper list 2 consult hw ref manual for explanation of copper cmds
;*-------------------------------------------------------------------------------*
mirror_cop:
dc.w BPLCON0,$0200 0 bp - lores bitplane control reg 0
dc.w BPLCON2,$a bp ctrl reg
dc.w BPL1MOD,0 bp modulo odd
dc.w BPL2MOD,0 bp modulo even
dc.w COLOR,$428 colour reg 0 (background)
dc.w BPLCON1,$0 this is the bitplane contol register 1
; see hardware ref for details.
mirsprite:
dc.w SPRPT,0 this tells sprite 0 where to look
dc.w SPRPT+2,0 for it's graphic and pos data set by
; the code higher up
dc.w DDFSTRT,$38 start of display horiz
dc.w DDFSTOP,$d0 stop of display horiz
dc.w DIWSTRT,$2c81 visible window top left
dc.w DIWSTOP,$2cc1 visible window bottom right
; this loads the pointers that tell custom chips where in mem you bps are
; the section near start of code fill in the addresses after
mirror_plane:
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w $2b01,$ff00
dc.w $2c01,$ff00 start gfx
dc.w BPLCON0,$1200
dc.w color+2,$a70
bar_top:
f: set $2d
c: set $FFF
rept 15
dc.b f,01,$ff,00
dc.w color,c
f: set f+6
c: set c-$111
endr
dc.w $ab01,$ff00 mirror gfx
dc.w BPL1MOD,-80 bp modulo odd
dc.w BPL2MOD,-80 bp modulo even
bar_bot:
dc.w $d001,$ff00
dc.w color,$FFF
dc.w $d601,$ff00
dc.w color,$EEE
dc.w $dc01,$ff00
dc.w color,$ddd
dc.w $e201,$ff00
dc.w color,$ccc
dc.w $e801,$ff00
dc.w color,$bbb
dc.w $ee01,$ff00
dc.w color,$aaa
dc.w $f401,$ff00
dc.w color,$999
dc.w $fa01,$ff00
dc.w color,$888
bar_mid1:
dc.w $ffe1,$fffe end ntsc
bar_mid2:
dc.w $0101,$ff00
dc.w color,$777
dc.w $0701,$ff00
dc.w color,$666
dc.w $0d01,$ff00
dc.w color,$555
dc.w $1301,$ff00
dc.w color,$444
dc.w $1901,$ff00
dc.w color,$333
dc.w $1f01,$ff00
dc.w color,$222
bar_bottom:
dc.w $2501,$ff00
dc.w color,$111
dc.w $2b01,$ff00
dc.w color,0
dc.w $2c01,$ff00 end gfx
dc.w BPLCON0,$0200
dc.w COLOR,$428 colour reg 0 (background)
dc.w $2d01,$ff00 end pal
dc.w INTREQ,$8010 strobe for interupt
dc.w $ffff,$fffe end copper
;*-------------------------------------------------------------------------------*
;this is copper list 3 consult hw ref manual for explanation of copper cmds
;*-------------------------------------------------------------------------------*
cycle_copper
dc.w BPLCON0,$0200 0 bp - lores bitplane control reg 0
dc.w BPLCON2,$a bp ctrl reg
dc.w BPL1MOD,120 bp modulo odd
dc.w BPL2MOD,120 bp modulo even
dc.w COLOR,0 colour reg 0 (background)
dc.w BPLCON1,$0 this is the bitplane contol register 1
; see hardware ref for details.
cyclesprite:
dc.w SPRPT,0 this tells sprite 0 where to look
dc.w SPRPT+2,0 for it's graphic and pos data set by
; the code higher up
dc.w DDFSTRT,$38 start of display horiz
dc.w DDFSTOP,$d0 stop of display horiz
dc.w DIWSTRT,$2c81 visible window top left
dc.w DIWSTOP,$2cc1 visible window bottom right
; this loads the pointers that tell custom chips where in mem you bps are
; the section near start of code fill in the addresses after
cycleplanes
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w BPLPT+4,0
dc.w BPLPT+6,0
dc.w BPLPT+8,0
dc.w BPLPT+10,0
dc.w BPLPT+12,0
dc.w BPLPT+14,0
dc.w BPLPT+16,0
dc.w BPLPT+18,0
dc.w $2b01,$ff00
cycleList:
c: set COLOR
rept 32
dc.w c,0
c: set c+2
endr
listend:
dc.w $2c01,$ff00 start gfx
dc.w BPLCON0,$4200
dc.w $ac01,$ff00
dc.w BPL1MOD,-200 bp modulo odd
dc.w BPL2MOD,-200 bp modulo even
dc.w $ffe1,$fffe end ntsc
dc.w $2c01,$ff00 end gfx
dc.w BPLCON0,$0200
dc.w $2d01,$ff00 end pal
dc.w INTREQ,$8010 strobe for interupt
dc.w $ffff,$fffe end copper
;*-------------------------------------------------------------------------------*
;intro copper list consult hw ref manual for explanation of copper cmds
;*-------------------------------------------------------------------------------*
intro_copper
dc.w BPLCON0,$0200 0 bp - lores bitplane control reg 0
dc.w BPLCON2,$4a bp ctrl reg
moddulo:
dc.w BPL1MOD,160 bp modulo odd
dc.w BPL2MOD,160 bp modulo even
dc.w COLOR,0 colour reg 0 (background)
dc.w BPLCON1,$0 this is the bitplane contol register 1
; see hardware ref for details.
intro_sprite:
dc.w SPRPT,0 this tells sprite 0 where to look
dc.w SPRPT+2,0 for it's graphic and pos data set by
; the code higher up
dc.w DDFSTRT,$38 start of display horiz
dc.w DDFSTOP,$d0 stop of display horiz
dc.w DIWSTRT,$2c81 visible window top left
dc.w DIWSTOP,$2cc1 visible window bottom right
; this loads the pointers that tell custom chips where in mem you bps are
; the section near start of code fill in the addresses after
intro_planes
dc.w BPLPT,0
dc.w BPLPT+2,0
dc.w BPLPT+4,0
dc.w BPLPT+6,0
dc.w BPLPT+8,0
dc.w BPLPT+10,0
dc.w BPLPT+12,0
dc.w BPLPT+14,0
dc.w BPLPT+16,0
dc.w BPLPT+18,0
dc.w $2b01,$ff00
intro_List:
c: set COLOR
rept 32
dc.w c,0
c: set c+2
endr
dc.w $2c01,$ff00 start gfx
plane_start:
dc.w BPLCON0,$5200
dc.w $f401,$ff00
dc.w BPLCON0,$0200
dc.w $ffe1,$fffe end ntsc
dc.w $2c01,$ff00 end gfx
dc.w INTREQ,$8010 strobe for interupt
dc.w $ffff,$fffe end copper
;*-------------------------------------------------------------------------------*
; DATA SECTION
;*-------------------------------------------------------------------------------*
section spritedata,data_c
dummysprite:
dc.w 0,0,0,0
ltbk_sprite1:
dc.b 83,128,8,2
dc.w $0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001f,$0000,$001f,$0000,$001f,$0000
dc.w $001f,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$00ff,$0000,$00ff,$0000,$00ff,$0000
dc.w $00ff,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0007,$0000
dc.w $0007,$0000,$0007,$0000,$0007,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$07f0,$080c,$0ffe,$0002
dc.w $0ffe,$0001,$0ffe,$0001,$0f2f,$00b0,$0f17,$0018
dc.w $0f0f,$0008,$0f07,$0000,$0f07,$0000,$0f07,$0000
dc.w $0f07,$0000,$0f07,$0000,$0f07,$0000,$0f0f,$0008
dc.w $0f07,$0008,$0f1e,$0091,$0fff,$0001,$0fff,$0001
dc.w $0ffe,$0001,$0fff,$0000,$0f17,$0098,$0f03,$0004
dc.w $0f03,$0000,$0f03,$0000,$0f03,$0000,$0f03,$0000
dc.w $0f03,$0000,$0f03,$0000,$0f03,$0000,$0f03,$0000
dc.w $0f07,$0004,$0f03,$0004,$0f0f,$0008,$0f0f,$0090
dc.w $0fff,$0000,$0ffe,$0001,$0ffe,$0002,$07f8,$0804
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0181,$0242,$03c3,$0004,$03c7,$0000,$03c7,$0008
dc.w $03cf,$0000,$03cf,$0010,$03df,$0000,$03df,$0020
dc.w $03fe,$0001,$03fe,$0000,$03fc,$0002,$03fc,$0000
dc.w $03f8,$0004,$03f8,$0000,$03f0,$0008,$03f0,$0000
dc.w $03e0,$0010,$03e0,$0010,$03f0,$0000,$03f0,$0008
dc.w $03f8,$0000,$03f8,$0004,$03fc,$0000,$03fc,$0002
dc.w $03fe,$0000,$03fe,$0001,$03df,$0020,$03df,$0000
dc.w $03cf,$0010,$03cf,$0000,$03c7,$0008,$03c7,$0000
dc.w $03c3,$0004,$03c3,$0000,$03c1,$0002,$03c1,$0000
dc.w $03c0,$0001,$0180,$0240,$0000,$0000,$0000,$0000
dc.w $0000,$0000
dc.w 0,0
ltbk_sprite2:
dc.b 83,136,8,2
dc.w $0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$00ff,$0000
dc.w $00ff,$0000,$00ff,$0000,$00ff,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00ff,$0000
dc.w $00ff,$0000,$00ff,$0000,$00ff,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00f0,$0000
dc.w $00f0,$0000,$00f0,$0000,$00f0,$0000,$00f0,$0000
dc.w $00f0,$0000,$fcff,$0000,$fcff,$0000,$fcff,$0000
dc.w $fcff,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$ffc0,$0000,$ffc0,$0000,$ffc0,$0000
dc.w $ffc0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83ff,$0000,$83ff,$0000,$83ff,$0000
dc.w $83ff,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$83c0,$0000
dc.w $83c0,$0000,$83c0,$0000,$83c0,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $00f0,$0090,$00f0,$0000,$80f0,$8000,$81f8,$8108
dc.w $00f0,$8108,$80f0,$0108,$83fc,$0204,$83fc,$0204
dc.w $81f8,$0204,$81f8,$0204,$81f8,$0204,$07fe,$8402
dc.w $87fe,$8402,$07fe,$0402,$039c,$0462,$039c,$0402
dc.w $039c,$0402,$879e,$8000,$079e,$8000,$cf9f,$4861
dc.w $8fff,$4801,$cfff,$0801,$c7fe,$0801,$c7fe,$0801
dc.w $cf0f,$0090,$cf0f,$0000,$cf0f,$0000,$cf0f,$0000
dc.w $cf0f,$0000,$8f0f,$4000,$cf0f,$4000,$0f0f,$8000
dc.w $8f0f,$8000,$0f0f,$0000,$0f0f,$0000,$0f0f,$0909
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $c180,$2240,$e3c0,$0000,$c3c0,$2001,$c3c3,$0002
dc.w $83c1,$4002,$83c3,$0000,$03c7,$8004,$03c7,$0004
dc.w $03c3,$0004,$03c7,$0000,$03c7,$0000,$03c7,$0000
dc.w $03c7,$0000,$03c7,$0000,$03c7,$0000,$03c7,$0000
dc.w $03c7,$0000,$03c7,$0000,$03c7,$0000,$03c7,$0000
dc.w $03c7,$0000,$03c7,$0000,$03c7,$0000,$03c7,$0000
dc.w $03c7,$0000,$03c7,$0000,$03c7,$0000,$03c7,$8000
dc.w $83c7,$0000,$83c3,$4004,$c3c7,$0004,$c3c7,$2004
dc.w $e3c3,$0000,$e3c1,$1002,$f3c3,$0002,$f3c0,$0001
dc.w $f3c0,$0000,$6180,$9240,$0000,$0000,$0000,$0000
dc.w $0000,$0000
dc.w 0,0
ltbk_sprite3:
dc.b 83,144,8,2
dc.w $0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$f3ff,$0000
dc.w $f3ff,$0000,$f3ff,$0000,$f3ff,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$e01e,$0000
dc.w $e01e,$0000,$e01e,$0000,$e01e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$001e,$0000,$001e,$0000,$001e,$0000
dc.w $001e,$0000,$f01e,$0000,$f01e,$0000,$f01e,$0000
dc.w $f01e,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$f1ff,$0000,$f1ff,$0000,$f1ff,$0000
dc.w $f1ff,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1ff,$0000,$f1ff,$0000,$f1ff,$0000
dc.w $f1ff,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1e0,$0000,$f1e0,$0000,$f1e0,$0000
dc.w $f1e0,$0000,$f1e0,$0000,$f1e0,$0000,$f1ff,$0000
dc.w $f1ff,$0000,$f1ff,$0000,$f1ff,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$01e0,$0210,$03f8,$0408
dc.w $07f8,$0804,$0ffe,$0002,$1ffe,$00c0,$1e1e,$2120
dc.w $3f3e,$0120,$3c1e,$0200,$3e1e,$0200,$3c1e,$0012
dc.w $3c00,$0000,$3e00,$0200,$3c00,$0200,$3e00,$0100
dc.w $3fc0,$2040,$0fe0,$1020,$0fe0,$0810,$03f8,$0408
dc.w $02f8,$0304,$01fc,$0100,$00fe,$0080,$003f,$0041
dc.w $003e,$0021,$001f,$0000,$000f,$0010,$001f,$0010
dc.w $000f,$0000,$000f,$0000,$3c1f,$2410,$3c0f,$0010
dc.w $3c1f,$0000,$3e3e,$0221,$1e3f,$2101,$3ffe,$20c0
dc.w $1ffe,$0002,$0ff8,$1004,$0ff8,$0808,$03e0,$0410
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $3c03,$4204,$ff07,$8100,$ff07,$0080,$ffc7,$0040
dc.w $ff87,$1840,$c3e7,$2420,$e7c7,$2420,$81e7,$4200
dc.w $c3e7,$4200,$c1e7,$4000,$c1e7,$4000,$80c7,$0120
dc.w $8007,$0000,$8007,$0000,$8007,$0000,$8007,$0000
dc.w $8007,$0000,$8007,$0000,$8007,$0000,$8007,$0000
dc.w $8007,$0000,$8007,$0000,$8007,$0000,$8007,$0000
dc.w $8007,$0000,$8007,$0000,$80c7,$0120,$c1e7,$4000
dc.w $c1e7,$4000,$c3e7,$4200,$81e7,$4200,$e7c7,$2420
dc.w $c3e7,$2420,$ff87,$1840,$ffc7,$0040,$ff07,$0080
dc.w $ff07,$8100,$3c03,$4204,$0000,$0000,$0000,$0000
dc.w $0000,$0000
dc.w 0,0
ltbk_sprite4:
dc.b 83,152,8,2
dc.w $0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$f000,$0000
dc.w $f000,$0000,$f000,$0000,$f000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$e000,$0000,$e000,$0000,$e000,$0000
dc.w $e000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$c000,$0000,$c000,$0000,$c000,$0000
dc.w $c000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$e000,$0000
dc.w $e000,$0000,$e000,$0000,$e000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$03c0,$0420,$07f0,$0810
dc.w $0ff0,$1008,$1ffc,$0004,$3ffc,$0180,$3c3c,$4240
dc.w $7e7c,$0240,$783c,$0400,$7c3c,$0400,$783c,$0024
dc.w $7800,$0000,$7c00,$0400,$7800,$0400,$7c00,$0200
dc.w $7f80,$4080,$1fc0,$2040,$1fc0,$1020,$07f0,$0810
dc.w $05f0,$0608,$03f8,$0200,$01fc,$0100,$007e,$0082
dc.w $007c,$0042,$003e,$0000,$001e,$0020,$003e,$0020
dc.w $001e,$0000,$001e,$0000,$783e,$4820,$781e,$0020
dc.w $783e,$0000,$7c7c,$0442,$3c7e,$4202,$7ffc,$4180
dc.w $3ffc,$0004,$1ff0,$2008,$1ff0,$1010,$07c0,$0820
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0380,$8440,$87c0,$0800,$8f80,$0040,$8f80,$1000
dc.w $9f00,$0080,$9f00,$2000,$be00,$0100,$be00,$4000
dc.w $fc00,$0200,$fc00,$0000,$f800,$0400,$f800,$0000
dc.w $f000,$0800,$f000,$0000,$e000,$1000,$e000,$0000
dc.w $c000,$2000,$c000,$2000,$e000,$0000,$e000,$1000
dc.w $f000,$0000,$f000,$0800,$f800,$0000,$f800,$0400
dc.w $fc00,$0000,$fc00,$0200,$be00,$4000,$be00,$0100
dc.w $9f00,$2000,$9f00,$0080,$8f80,$1000,$8f80,$0040
dc.w $87c0,$0800,$87c0,$0020,$83e0,$0400,$83e0,$0000
dc.w $81e0,$0200,$00c0,$8120,$0000,$0000,$0000,$0000
dc.w $0000,$0000
dc.w 0,0
;*-------------------------------------------------------------------------------*
section musicdata,data_c
incdir data:
mt_data:
incbin mod.rave3
even
MT_DATA2:
incbin mod.menu
;*-------------------------------------------------------------------------------*
section variables,data
glib dc.b "graphics.library",0
dlib dc.b "dos.library",0
even
greet_ptr dc.l 0
screenpos dc.l 0
textpos dc.l 0
x_ptr dc.l 0
gfxlib dc.l 0
cgfxlib dc.l 0
doslib dc.l 0
oldcopper dc.l 0
anim_ptr dc.l 0
spin_ptr dc.l 0
back_ptr dc.l 0
ack_ptr dc.l 0
scroll_wait dc.w 1
bass_wait dc.w 1
textcount dc.w 10
gfxcount dc.w 5
gfxcmp dc.w 5
count dc.w 10
counts3 dc.w 10
alternator dc.w 100
countamount dc.w 6
BEATcount dc.w 4
acounter dc.w 4
upordown dc.w 0
direction dc.w 0
stselect dc.w 0
delay dc.w 1
cytog dc.w 0
toggle dc.w $ffff
scrollcount dc.w 32
vbl dc.w 0
spindone dc.w 0
bored dc.w 100
intro_counter dc.w $200
wait dc.w 5
strobelist dc.w $FFF
dc.w $f00
dc.w $ff0
dc.w $0f0
dc.w $0ff
dc.w $00f
dc.w $f0f
plane_store:
dc.w BPLCON0,$2600
dc.w $ffe1,$fffe end ntsc
dc.w $2c01,$ff00 end gfx
dc.w BPLCON0,$0200
dc.w $2d01,$ff00 end copper
strobecount dc.b 6
linecount dc.b 9
cycount dc.b 2
greets:
; 12345678901234567890
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b "THANK YOU FOR",10
dc.b "WATCHING OUR LITTLE",10
dc.b "RAVE DEMO",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b "@ ",10
dc.b "This demo is",10
dc.b "dedicated to a",10
dc.b "scene member who",10
dc.b "died this week",10
dc.b " ",10
dc.b " ",10
dc.b "@ ",10
dc.b " ",10
dc.b " Master of the",10
dc.b " Puppets",10
dc.b " Rest in Peace",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b "@ ",10
dc.b "CREDITS AND GREETS",10
dc.b " ",10
dc.b " ",10
dc.b "====================",10
dc.b "PROGRAMMING",10
dc.b "====================",10
dc.b 10
dc.b "*CYLON (DMX)*",10
dc.b 10,10,10,"@",10
dc.b "====================",10
dc.b "GRAPHICS",10
dc.b "====================",10
dc.b "GIG (DMX)",10
dc.b "Title picture",10
dc.b "Font1",10
dc.b "Small still GFX",10
dc.b " ",10
dc.b "@ ",10
dc.b "*CYLON (DMX)*",10
dc.b "Back drops",10
dc.b "This font lowercase",10
dc.b "Animated GFX",10
dc.b "Cycle GFX",10
dc.b "ZADD (DMX)",10
dc.b "This font uppercase",10
dc.b " ",10
dc.b "@====================",10
dc.b "MUSIC",10
dc.b "====================",10
dc.b 10
dc.b "ZADD (DMX) RAVE",10
dc.b "ACCEL (DMX) END.",10
dc.b 10,10
dc.b "@====================",10
dc.b "UNUSED MUSIC",10
dc.b "====================",10
dc.b 10,10
dc.b "THE ASSASSIN (DMX)",10
dc.b 10,10
dc.b "@====================",10
dc.b "INSPIRATION AND",10
dc.b "MORAL SUPPORT",10
dc.b "====================",10
dc.b 10
dc.b "Andy Jim",10
dc.b "Stuart Lee",10
dc.b 10
dc.b "@====================",10
dc.b "THE SHORT GREETINGS",10
dc.b "====================",10
dc.b "DJ RAZ FUTURE SOUNDS",10
dc.b "DISCO KICKIN",10
dc.b "ANDY MICHELLE",10
dc.b "JOFF DARYL",10
dc.b "CLAIRE CHRIS",10
dc.b "ROSY PHIL",10
dc.b "LES EMMA",10
dc.b "PAUL ALAN",10
dc.b "LISA KELLY",10
dc.b "SARAH PHILIP",10
dc.b "VICKY ALAN",10
dc.b "KEVIN JOSHUA",10
dc.b " ",10
incbin greets.i
dc.b " ",10
dc.b "====================",10
dc.b "ADDRESSES FOLLOW",10
dc.b "====================",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b "Cylon ",10
dc.b "@46 Willingham Road ",10
dc.b "@Knaith Park ",10
dc.b "@Lincs ",10
dc.b "@DN21 5ES ",10
dc.b "@ ",10
dc.b "Zadd ",10
dc.b "(Deadlock Arts) ",10
dc.b "@31 Coroners Lane ",10
dc.b "@Farnsworth ",10
dc.b "@Widnes ",10
dc.b "@Cheshire ",10
dc.b "@WA8 9JN ",10
dc.b "@ ",10
dc.b "Mint sauce ",10
dc.b "(Deadlock Arts) ",10
dc.b "@46 Churncote ",10
dc.b "@Stirchley ",10
dc.b "@Telford ",10
dc.b "@Shropshire ",10
dc.b "@TF3 1YL ",10
dc.b "@ ",10
dc.b "R9 Sorry I couldn't ",10
dc.b "find your addr. ",10
dc.b " ",10
dc.b "====================",10
dc.b "THE BORING WAFFLE",10
dc.b " ",10
dc.b "Stu sorry no logo",10
dc.b "my brain stalled at",10
dc.b "the last minute",10
dc.b "@ ",10
dc.b "Minty it's all going",10
dc.b "in AR4 matey 50 quid",10
dc.b "and I'll take it out",10
dc.b "100 quid and I'll",10
dc.b "give you the",10
dc.b "negatives and the",10
dc.b "sheeps statement.",10
dc.b "@ ",10
dc.b "Tango OH NO!!!",10
dc.b "Sorry for the delay",10
dc.b "@ ",10
dc.b "Speed a parcel is",10
dc.b "comming.",10
dc.b " ",10
dc.b "Ghost where are you?",10
dc.b " ",10
dc.b "Rotox giz a call",10
dc.b "@ ",10
dc.b "mUb now I wonder",10
dc.b "when the modem is",10
dc.b "comming back HINT",10
dc.b "HINT!",10
dc.b "@====================",10
dc.b " ",10
dc.b " ",10
dc.b "!text ends!",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b " ",10
dc.b 0
text:
; 1234567890
dc.b "WELCOME",13
DC.B " ",13
DC.B "TO RETINA",13
DC.B " ",13
DC.B "BURN ONE",13
DC.B " ",13
DC.B "BY CYLON",13
DC.B " ",13
DC.B "DIMENSION",13
DC.B " ",13
DC.B "X",13
DC.B " ",13
DC.B "RAVE MUSIC",13
DC.B " ",13
DC.B "BY ZADD",13
DC.B " ",13
DC.B "NOW",13
DC.B " ",13
DC.B "RAVE",13
DC.B " ",13
DC.B "ON",13
DC.B " ",13
DC.B "THE",13
DC.B " ",13
DC.B "EXTASY",13
DC.B " ",13
DC.B "OF",13
DC.B " ",13
DC.B "DIMENSION",13
DC.B " ",13
DC.B "X",13
DC.B " ",13
DC.B "SOURCECODE",13
DC.B " ",13
DC.B "SIZE",13
DC.B " ",13
DC.B "SIXTY FOUR",13
DC.B " ",13
DC.B "KILO BYTES",13
DC.B " ",13
DC.B "HI ARE YOU",13
DC.B " ",13
DC.B "HAPPY GUYZ",13
DC.B " ",13
DC.B "I AM DEAD",13
DC.B " ",13
DC.B "TIRED I",13
DC.B " ",13
DC.B "HAVE BEEN",13
DC.B " ",13
DC.B "CODING FOR",13
DC.B " ",13
DC.B "EIGHTEEN",13
DC.B " ",13
DC.B "HOURS NOW",13
DC.B " ",13
DC.B "AND STU",13
DC.B " ",13
DC.B "HAS BEEN",13
DC.B " ",13
DC.B "ON THE",13
DC.B " ",13
DC.B "PHONE FOR",13
DC.B " ",13
DC.B "AN HOUR",13
DC.B " ",13
DC.B "OR MORE",13
DC.B " ",13
DC.B "I NEED",13
DC.B " ",13
DC.B "SLEEP",13
DC.B " ",13
DC.B "LET ME GO",13
DC.B " ",13
DC.B "TO BED ITS",13
DC.B " ",13
DC.B "TWO AM",13
DC.B " ",13
DC.B "GOOD",13
DC.B " ",13
DC.B "NIGHT",13
DC.B "ZZZZZZZZZZ",13
DC.B " ",13
DC.B " ",13
DC.B " ",13
DC.B " ",13
DC.B " ",13
DC.B 0
anim_data:
dc.b 1,3,1,3,1,3,1,3,1,3,3,3,8,9,10,11,8,9,10,11,8,9,10,11
dc.b 12,12,12,4,5,6,7,4,5,6,7,4,5,6,7,2,2,12,12
dc.b 7,6,5,4,7,6,5,4,7,6,5,4,2,2,13,14,15,16,13,14,15,16
dc.b 2,2,2,2,2,16,16,16,13,13,13,14,14,14,15,15,15,16,16,16
dc.b 1,1,3,3,12,12,12,12
dc.b 0
an_fin:
spin_data:
dc.b 4,5,6,7,0
spin_fin:
even
black1:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
black2:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
block1: dc.w 0
tabpos: dc.w 0
block2: dc.w 0
collist:
dc.w $f,$c,$a,7,5,2,0,0,0,0,0,0,0,0,0
dc.w $f0,$c0,$a0,$70,$50,$20,0,0,0,0,0,0,0,0,0
dc.w $f00,$c00,$a00,$700,$500,$200,0,0,0,0,0,0,0,0,0
dc.w $ff0,$cc0,$aa0,$770,$550,$220,0,0,0,0,0,0,0,0,0
dc.w $ff,$77,$22,0,0,0,0,0,0,0,0,0,0,0,0
dc.w $ff0,$550,$220,0,0,0,0,0,0,0,0,0,0,0,0
dc.w $f0f,$707,$505,$202,0,0,9,0,0,0,0,0,0,0,0
dc.w $fff,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.w $fff,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
coll_finish:
;*-------------------------------------------------------------------------------*
section screendata,data_c
even
TEXT_SCREEN:
ds.b 40*40
screen:
incbin graf1.BIN
incbin TEKNO.BIN
incbin graf2.BIN
cog:
incbin frame.BIN
cogend:
incbin spin.bin
incbin dmx.bin
incbin arrow001.bin
incbin arrow002.bin
incbin arrow003.bin
incbin arrow004.bin
animend:
xxxx: incbin xxxx001
xxx3: incbin xxxx002
xxx2: incbin xxxx003
xxx1: incbin xxxx004
section screendata2,data_c
even
cyclescreen: incbin halfCYcLepic
even
blank: ds.b 40*18 ;16 blank lines
font32:
incbin oval_font.bin
font16:
incbin testfont.bin 16*32-1456 91 chars
section screendata3,data_c
even
introp: incbin roundx.bin
introg: equ introp+64
back_pic:
incbin xpic.bin
;*-------------------------------------------------------------------------------*
section nonechipgfx,data
backdr1: incbin xpic.bin
backdr2: incbin back2.bin
backdr3: incbin back3.bin
backdr4: incbin back4.bin
backdr5: incbin back5.bin
back_end:
fl1: incbin flare001
fl2: incbin flare002
fl3: incbin flare003
fl4: incbin flare004
fl5: incbin flare005
fl_rend: